package 蓝桥杯.第十四届蓝桥杯大赛软件赛省赛Java大学B组;

import java.util.Scanner;

/**
 * @Title: 蜗牛正解
 * @Author 贾金博
 * @Package 蓝桥杯.第十四届蓝桥杯大赛软件赛省赛Java大学B组
 * @Date 2024/4/9 21:16
 * @description:
 */
public class 蜗牛正解 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] x = new int[n + 10]; // x轴的坐标
        int[] a = new int[n + 10];
        int[] b = new int[n + 10]; // 一传送就来到了这
        double[][] dp = new double[n + 10][2];

        // dp[i][0] 表示的是走到第i个竹竿的底部
        //dp[i][1] 表示的是走到第i个竹竿的传送带的位置 也就是走到a[i]

        for(int i = 1; i <= n; ++ i ) {
            x[i] = sc.nextInt();
        }
        for(int i = 1; i < n; ++ i ) {
            a[i] = sc.nextInt();
            b[i + 1] = sc.nextInt(); // 被传送到 第 i + 1 竹竿的位置
        }
        dp[1][0] = x[1] * 1.0;
        dp[1][1] = x[1] * 1.0 + a[1] / 0.7; // 爬上去 爬到第一个可以传送的位置

        for(int i = 2; i <= n; ++ i ) {
            dp[i][0] = Math.min(dp[i - 1][0] + Math.abs(x[i] - x[i - 1]) * 1.0, dp[i - 1][1] + b[i] / 1.3);
            if(a[i] > b[i]) { // 上去
                dp[i][1] = Math.min(dp[i - 1][1] + (a[i] - b[i]) / 0.7, dp[i][0] + a[i] / 0.7);
            } else { // 下去
                dp[i][1] = Math.min(dp[i][0] + a[i] / 0.7, dp[i - 1][1] + (b[i] - a[i]) / 1.3);
            }
        }
        System.out.printf("%.2f", dp[n][0]);
    }
}
